package com.tanhua.sso.server.service;

import cn.hutool.cache.CacheUtil;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.tanhua.api.QuestionnaireReportServiceApi;
import com.tanhua.api.QuestionnaireResultApi;
import com.tanhua.api.UserInfoService;
import com.tanhua.sso.pojo.QuestionnaireReport;
import com.tanhua.sso.pojo.QuestionnaireResult;
import com.tanhua.sso.pojo.UserInfo;
import com.tanhua.sso.vo.DimensionVo;
import com.tanhua.sso.vo.SimilarYouVo;
import com.tanhua.sso.vo.TestSoulVo;
import org.apache.dubbo.common.utils.ConfigUtils;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Service
public class MockService {



    @DubboReference
    private QuestionnaireResultApi questionnaireResultApi;
    @DubboReference
    private QuestionnaireReportServiceApi questionnaireReportServiceApi;
    @DubboReference
    private UserInfoService userInfoService;

    /**
     * 测灵魂-查看结果（学生实战）
     * @param id
     * @return
     */
    public ResponseEntity report(Long id) {
        TestSoulVo testSoulVo=new TestSoulVo();

        //根据报告Id查看
        QuestionnaireReport questionnaireReport=questionnaireReportServiceApi.selectById(id);
        Map<String,String> map=new HashMap();
        map.put("外向",questionnaireReport.getExtroversion()+"%");
        map.put("判断",questionnaireReport.getJudgement()+"%");
        map.put("抽象",questionnaireReport.getAbstraction()+"%");
        map.put("理性",questionnaireReport.getRetionality()+"%");
        testSoulVo.setDimensions(map);

        //根据报告的属性查看结果
        QuestionnaireResult questionnaireResult=questionnaireResultApi.selecctById(questionnaireReport.getResultId());
        testSoulVo.setConclusion(questionnaireResult.getContent());
        testSoulVo.setCover(questionnaireResult.getCover());


        //根据相似属性Id查看
        List<QuestionnaireReport> list= questionnaireReportServiceApi.selectByQuestionnaireId(questionnaireReport.getResultId());

        List<SimilarYouVo> similarYou=list.stream().map((itrm)->{
            UserInfo userInfo = userInfoService.selectUser(itrm.getUserId());
            SimilarYouVo similarYouVo=new SimilarYouVo();
            similarYouVo.setId(userInfo.getId().intValue());
            similarYouVo.setAvatar(userInfo.getAvatar());
            return similarYouVo;
        }).collect(Collectors.toList());
        testSoulVo.setSimilarYou(similarYou);




        return ResponseEntity.ok(testSoulVo);
    }
}
